【Go语言】Fyne 解决 无法支持中文字体解决方法 (两种方式)

您所在的位置:网站首页 fyne框架 maui 【Go语言】Fyne 解决 无法支持中文字体解决方法 (两种方式)

【Go语言】Fyne 解决 无法支持中文字体解决方法 (两种方式)

2023-10-12 11:04| 来源: 网络整理| 查看: 265

第一种方式

1.安装官方的 cmd 工具

go get fyne.io/fyne/cmd/fyne

2.准备好字体文件(建议使用 ttf 字体格式)

字体文件下载地址 https://www.fonts.net.cn/

3.使用fyne把字体文件打包成二进制格式

fyne bundle fonts.ttf >> bundle.go

在这里插入图片描述

4.需要创建一个 theme 目录 把 bundle.go 放入其中 在这里插入图片描述 5.修改 bundle.go 文件 把 package 和 import 修改成指定格式后保存 见下图: 在这里插入图片描述 6.在 theme 文件夹新建 theme.go 文件 并添加以下代码

package theme import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/theme" "image/color" ) type MyTheme struct{} var _ fyne.Theme = (*MyTheme)(nil) // resourceNotoSansSCTtf 对应的是 bundle.go 中的变量名 func (m MyTheme) Font(fyne.TextStyle) fyne.Resource { return resourceNotoSansSCTtf } func (*MyTheme) Color(n fyne.ThemeColorName, v fyne.ThemeVariant) color.Color { return theme.DefaultTheme().Color(n, v) } func (*MyTheme) Icon(n fyne.ThemeIconName) fyne.Resource { return theme.DefaultTheme().Icon(n) } func (*MyTheme) Size(n fyne.ThemeSizeName) float32 { return theme.DefaultTheme().Size(n) } 第二种方式

1.在项目中新建一个 theme 目录 在这里插入图片描述 2.在 theme 文件夹中 新建 fonts 目录 在这里插入图片描述

3.把下载的 ttf 格式的字体文件放置到 fonts 目录中 在这里插入图片描述 4.在 theme 目录中 新建 theme.go 文件

package theme import ( _ "embed" "fyne.io/fyne/v2" "fyne.io/fyne/v2/theme" "image/color" ) var ( //go:embed fonts/NotoSansSC.ttf NotoSansSC []byte ) type MyTheme struct{} var _ fyne.Theme = (*MyTheme)(nil) // StaticName 为 fonts 目录下的 ttf 类型的字体文件名 func (m MyTheme) Font(fyne.TextStyle) fyne.Resource { return &fyne.StaticResource{ StaticName: "NotoSansSC.ttf", StaticContent: NotoSansSC, } } func (*MyTheme) Color(n fyne.ThemeColorName, v fyne.ThemeVariant) color.Color { return theme.DefaultTheme().Color(n, v) } func (*MyTheme) Icon(n fyne.ThemeIconName) fyne.Resource { return theme.DefaultTheme().Icon(n) } func (*MyTheme) Size(n fyne.ThemeSizeName) float32 { return theme.DefaultTheme().Size(n) } 在 main.go 中引入并使用 package main import ( "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" "fyne/src/theme" // fyne是我的项目路径 ) func main() { a := app.New() a.Settings().SetTheme(&theme.MyTheme{}) w := a.NewWindow("你好") hello := widget.NewLabel("你好 Fyne!") w.SetContent(container.NewVBox( hello, widget.NewButton("嗨!", func() { hello.SetText("欢迎 :)") }), )) w.ShowAndRun() } 最后编译显示

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3